import express from 'express';
import cors from 'cors';
import helmet from 'helmet';
import morgan from 'morgan';
import cookieParser from 'cookie-parser';
import routes from './routes';
import { startBackupJob } from './jobs/backupJob';

const app = express();
const PORT = process.env.PORT || 3888;

// 中间件
app.use(helmet()); // 安全头

// CORS配置
const corsOptions = {
  origin: [
    'http://localhost:3000',
    'http://localhost:3666',
    'http://0.0.0.0:3000',
    'http://0.0.0.0:3666',
    'http://8.140.192.100:3000',
    'http://8.140.192.100:3666',
    'http://www.aiproducthome.com',
    'http://www.aiproducthome.com',
    'http://aiproducthome.com',
    'http://aiproducthome.com',
    'https://aiproducthome.com',
    'https://aiproducthome.com',
    'https://www.aiproducthome.com',
    'https://www.aiproducthome.com',
  ],
  credentials: true, // 允许跨域请求携带Cookie
};
app.use(cors(corsOptions)); // CORS

app.use(morgan('combined')); // 日志
app.use(cookieParser()); // Cookie解析
app.use(express.json({ limit: '10mb' })); // JSON解析
app.use(express.urlencoded({ extended: true })); // URL编码

// 路由
app.use('/', routes);

// 错误处理中间件
app.use((err: any, req: express.Request, res: express.Response, next: express.NextFunction) => {
  console.error('服务器错误:', err);
  res.status(500).json({
    success: false,
    message: '服务器内部错误',
    error: process.env.NODE_ENV === 'development' ? err.message : '未知错误'
  });
});

// 404处理
app.use('*', (req, res) => {
  res.status(404).json({
    success: false,
    message: '接口不存在'
  });
});

// 启动服务器
app.listen(PORT, () => {
  console.log(`🚀 服务器启动成功！`);
  console.log(`📍 服务地址: http://localhost:${PORT}`);
  console.log(`📊 健康检查: http://localhost:${PORT}/health`);
  console.log(`📚 API文档: http://localhost:${PORT}/api/articles`);
  
  // 启动数据库备份定时任务
  startBackupJob();
  console.log(`📦 数据库备份任务已启动`);
});

export default app;